#ifndef RLGUTS_H
#define RLGUTS_H

class RouletteRound;
class RouletteBet;

#ifdef FORCED_ROULETTE

class ODBCPool;
class ODBCConnection;

// Data struct for storing valid spin values range
typedef struct SpinRange
{
	uint8 min;
	uint8 max;
} SpinRange;


// CSN-12125 - Class for using forced spins
class RouletteForcedGuts
{
	public:
		RouletteForcedGuts(uint8 tableId);
		~RouletteForcedGuts();
		
		bool8 load(uint8 tableId, String pid);
		uint8 spin();
	
	protected:
		void  clear();
		void  reset();
		bool8 isEmpty();
		uint8 encodeSpin(String decoded);
	
		uint8*    spins;   // Spin list
		int32     total;   // Number of spins
		int32     current; // Current spin index
		SpinRange range;   // Valid spin values range
};

#endif

class RouletteGuts
{
	public:
		RouletteGuts();
		virtual ~RouletteGuts();

		static  RouletteGuts* getGuts(uint8 which);

		virtual uint8        spin() = 0;
		virtual bool8        validateBet(uint8 wagerID) = 0;
		virtual RouletteBet* newBet(uint8, int32) = 0;
};

inline
RouletteGuts::RouletteGuts()
{
}

inline
RouletteGuts::~RouletteGuts()
{
}

#endif
